The process of encrypting data typically includes transforming a message into an encrypted state, transmitting the encrypted message to a second party, and decrypting the encrypted data to recover the original message. Such systems typically rely on a key known by both the sender and the recipient to decrypt the message.
The key known to both parties may be used as a parameter interpreted by a complex algorithm in order to encrypt or decrypt the data. The algorithm is typically made extremely computationally intense in order to ensure that an unintended recipient of the data cannot readily decrypt the message. However, such systems by definition require large amounts of computation and a corresponding delay in the process of transmitting messages.
Prior encryption systems typically process a message using one of two methods. In the first methods, a message may be divided into equally sized blocks and each block encrypted. The encryption of one block may depend in part on the data contained in a previous block. In a second method, rather than dividing the message into blocks the message is processed as a single string of data. Both methods provide predictability to unintended recipients. An unintended recipient may rely on the fact that the blocks will have a uniform length or that the entire message is processed as a single string of data.
Prior systems also typically apply a fixed algorithm, which, though computationally complex, does not vary significantly dynamically with each encryption. That is to say, the process of obfuscating a message proceeds through defined steps which are difficult to undo, but which are nonetheless the product of a fixed method. Some systems may vary the algorithm depending on the value of the key or the text being encrypted. However, the algorithm is not independent variable.
What is needed is an encryption method that provides reduced computational complexity and greater unpredictability to potential unintended recipient.
It would be a further advancement to provide an encryption method dividing a message into differently sized blocks, or message segments, subject to independent manipulation in order to increase the difficulty of decryption for unintended recipients.
It would be a further advancement in the art to provide an encryption method dynamically determining both which obfuscation operation will be performed and the parameters which will govern the obfuscation operations independent from a key or the encrypted text.